package tesis.service.rest;

import tesis.dto.base.BaseRemoteOutBean;

import tesis.dto.in.ObjetoParametro;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import tesis.dto.in.*;
import tesis.dto.out.FormDTO;


public interface MotorService {
    @POST
    @Consumes(MediaType.APPLICATION_XML)
    @Produces(MediaType.APPLICATION_XML)
    @Path("/test")
    BaseRemoteOutBean test(ObjetoParametro objeto);

    @GET
    @Path("/test2")
    BaseRemoteOutBean test2(@QueryParam("objeto") String  objeto);

    
    @POST
    @Consumes(MediaType.APPLICATION_XML)
    @Path("/saveProceso")
    ProcesoDTO saveProceso(ProcesoDTO procesoDTO); 
    
    @GET
    @Path("/getProceso")
    ProcesoDTO getProceso(@QueryParam("idProceso") Integer idProceso);
    
    @GET
    @Path("/getInstanceProcess")
    InstanciaProcesoDTO getInstanceProcess( @QueryParam("codeInstanceStation") Integer codeInstanceStation);
    
    @GET
    @Path("/getInstanceProcessById")
    InstanciaProcesoDTO getInstanceProcessById( @QueryParam("idProcessInstance") Integer idProcessInstance);
    
    @GET
    @Path("/getOfficeInstanceStation")
    CargoDTO getOfficeInstanceStation(@QueryParam("codeInstanceStation") Integer codeInstanceStation);
    
    @GET
    @Path("/getInstanceStation")
    InstanciaEstacionDTO getInstanceStation(@QueryParam("codeInstanceStation") Integer codeInstanceStation);
    
    @GET
    @Path("/getTypeDocuments")
     ListTipoDocumento getTypeDocuments(@QueryParam("codeStation") Integer codeStation);
    
    @GET
    @Path("/getVars")
    ListVariables getVars(  @QueryParam("codeStation") Integer codeStation);
    
    
    
   @GET
   @Path("/getStation")
   EstacionDTO getStation( @QueryParam("idProceso")  Integer idProceso,@QueryParam("nameStation")  String nameStation);
   
   @POST
   @Path("/executeStation")
   ExecuteStationDTO executeStation(ExecuteStationDTO executeStation);
   
   @GET
   @Path("/getFirstInstanceStation")
   InstanciaEstacionDTO getFirstInstanceStation(@QueryParam("idProceso") Integer idProceso);
   
   
   @POST
   @Path("/getInstanceStationbyUser")
   ListInstanciaEstacionDTO getInstanceStationbyUser(AplicacionClienteDTO aplicacionClienteDTO );

   @GET
   @Path("/getStateInstanceStation")
   ListEstadoInstanciaEstacionDTO getStateInstanceStation();
   
   
   @GET
   @Path("/getAssignProcessUser")
   ListProcesoDTO getAssignProcessUser(@QueryParam("idUser") Integer idUser,@QueryParam("inicio")Integer inicio, @QueryParam("fin")Integer fin);
   
   @GET
   @Path("/pruebaEjecucion")
    ListInstanciaEstacionDTO pruebaEjecucion( @QueryParam("a") Integer  a);
   
   @GET
   @Path("/getVariablesForm")
   FormDTO getVariablesForm(@QueryParam("idEstacion") Integer idEstacion);
   
   
   @GET
   @Path("/getVarsInput")
   ListVariables getVarsInput(  @QueryParam("codeStation") Integer codeStation);
   
   @GET
   @Path("/getVarsOutput")
   ListVariables getVarsOutput(  @QueryParam("codeStation") Integer codeStation);
   
   @GET
   @Path("/getTypeDocumentsInput")
    ListTipoDocumento getTypeDocumentsInput(@QueryParam("codeStation") Integer codeStation);
   
   
   @GET
   @Path("/getTypeDocumentsOutput")
   ListTipoDocumento getTypeDocumentsOutput(@QueryParam("codeStation") Integer codeStation);
   
   @GET
   @Path("/getMapaById")
   MapaSincronizadoDTO findMapaById(@QueryParam("id")Integer id);
   

   @GET
   @Path("/getVarsHistoricInput")        
   ListHistoricoVar getVarsHistoricInput (@QueryParam("codeInstanceStation") Integer codeInstanceStation);
   
   @GET
   @Path("/getDocsHistoricInput")  
   ListHistoricoDoc getDocsHistoricInput( @QueryParam("codeInstanceStation") Integer codeInstanceStation);
   
      
   @GET
   @Path("/getVarsHistoricOuput")  
   ListHistoricoVar getVarsHistoricOuput( @QueryParam("codeInstanceStation") Integer codeInstanceStation);
   
   @GET
   @Path("/getDocsHistoricOutput")  
   ListHistoricoDoc getDocsHistoricOutput( @QueryParam("codeInstanceStation") Integer codeInstanceStation);
   

   @GET
   @Path("/getValoresParametros")
   FormDTO getValoresParametros(@QueryParam("idInstanciaProceso")Integer idInstanciaProceso);
   
   
   @GET
   @Path("/getValoresEstacionAnterior")
   FormDTO getValoresEstacionAnterior(@QueryParam("idInstanciaProceso")Integer idInstanciaProceso, @QueryParam("idInstanciaEstacionActual")Integer idInstanciaEstacionActual);

}

